package com.share.dip.demo;

/**
 * 问题：
 * Switch (高层策略：控制开关) 直接依赖于 LightBulb (低层实现：具体的电器)。
 * 如果想用 Switch 控制一个 Fan (风扇)，必须修改 Switch 类（违反开闭原则 OCP）。
 * 测试 Switch 的逻辑时，必须依赖真实的 LightBulb 或难以模拟它。
 */
// 高层模块：开关 (直接依赖低层模块的具体实现)
public class Switch {
    private LightBulb bulb; // 直接依赖具体的灯泡

    public Switch() {
        this.bulb = new LightBulb(); // 在内部创建具体依赖
    }

    public void operate() {
        if (bulb.isOn()) {
            bulb.turnOff();
        } else {
            bulb.turnOn();
        }
    }
}
